package com.zoulf.factory.net;

import com.zoulf.factory.model.api.RspModel;
import com.zoulf.factory.model.api.account.AccountRspModel;
import com.zoulf.factory.model.api.account.LoginModel;
import com.zoulf.factory.model.api.account.RegisterModel;
import com.zoulf.factory.model.api.message.MsgCreateModel;
import com.zoulf.factory.model.api.user.UserUpdateModel;
import com.zoulf.factory.model.card.MessageCard;
import com.zoulf.factory.model.card.UserCard;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;

/**
 * @author Zoulf.
 */

public interface RemoteService {

  /**
   * 注册接口
   *
   * @param model 传入的是RegisterModel
   * @return 返回的是RspModel<AccountRspModel>
   */
  @POST("account/register")
  Call<RspModel<AccountRspModel>> accountRegister(@Body RegisterModel model);

  /**
   * 登录接口
   *
   * @param model LoginModel
   * @return RspModel<AccountRspModel>
   */
  @POST("account/login")
  Call<RspModel<AccountRspModel>> accountLogin(@Body LoginModel model);

  /**
   * 绑定设备Id
   *
   * @param pushId 设备Id
   * @return RspModel<AccountRspModel>
   */
  @POST("account/bind/{pushId}")
  Call<RspModel<AccountRspModel>> accountBind(
      @Path(encoded = true, value = "pushId") String pushId);

  // 用户更新的接口
  @PUT("user")
  Call<RspModel<UserCard>> userUpdate(@Body UserUpdateModel model);// 用户更新的接口

  // 用户搜索的接口
  @GET("user/search/{name}")
  Call<RspModel<List<UserCard>>> userSearch(@Path("name") String name);

  // 用户关注的接口
  @PUT("user/follow/{userId}")
  Call<RspModel<UserCard>> userFollow(@Path("userId") String userId);

  // 获取联系人列表
  @GET("user/contact")
  Call<RspModel<List<UserCard>>> userContacts();

  // 查询某人的信息
  @GET("user/{userId}")
  Call<RspModel<UserCard>> userFind(@Path("userId") String userId);

  // 发送消息的接口
  @POST("msg")
  Call<RspModel<MessageCard>> msgPush(@Body MsgCreateModel model);

}
